class Solution {
public:
    int threeSumClosest(vector<int>& nums, int target) {
        //暴力
        // int mins=1000;
        // int n=nums.size();
        // for(int i=0;i<n;i++)
        // {
        //     for(int j=i+1;j<n;j++)
        //     {
        //         for(int k=j+1;k<n;k++)
        //         {
        //             int sum=nums[i]+nums[j]+nums[k];
                    
        //             mins=min(sum-target,mins);
        //         }
        //     }
        // }
        // return mins;
        sort(nums.begin(),nums.end());
        int mins=nums[0] + nums[1] + nums[2];
        int n=nums.size();
        for(int i=0;i<n;i++)
        {
            if (i > 0 && nums[i] == nums[i - 1]) 
                continue;
            int left=i+1;
            int right=n-1;
            while(left<right)
            {
                int sum=nums[i]+nums[left]+nums[right];
                if(sum==target)
                    return target;
                if (sum > target) 
                {
                    mins = abs(sum - target) < abs(mins - target) ? sum : mins;
                    right--;
                } else 
                {
                    mins = abs(sum - target) < abs(mins - target) ? sum : mins;
                    left++;
                }
            }
        }
        return mins;
    }
};